草庐IT

java - 将参数化的类实例传递给构造函数

全部标签

ruby - 在 Ruby 中使用关键字参数柯里化(Currying) proc

假设我有一个通用的Proc、Lambda或method,它带有一个可选的第二个参数:pow=->(base,exp:2){base**exp}现在我想柯里化(Currying)这个函数,给它一个3的exp。cube=pow.curry.call(exp:3)这里有一个歧义,由关键字参数和新的散列语法引起,Ruby将exp:3解释为作为第一个参数传递的散列,base.这导致函数立即被调用,当#**被发送到散列时呈现NoMethodError。为第一个参数设置默认值同样会导致函数在柯里化(Currying)时立即被调用,如果我将第一个参数标记为必需,而不提供默认值:pow=->(base:

ruby-on-rails - 这个 Ruby 函数在做什么?

我对它的返回方式感到困惑:defutc2user(t)ENV["TZ"]=current_user.time_zone_nameres=t.getlocalENV["TZ"]="UTC"resend它首先设置ENV变量,然后将'res'设置为本地值,然后重新分配ENV变量,然后返回res?不确定我是否理解这是如何从UTC转换为用户时区的? 最佳答案 第一行是将环境时区变量设置为用户的时区,以便在正确的时间为该用户获取res值。如果它没有设置为用户的,时间仍将是UTC。然后它将环境变量设置回UTC时间,我假设这是应用程序的默认时间。然

作为散列值的 Ruby 函数

我想知道是否可以或如何将函数映射到散列值。例如:----开始上课------------deffoo(var)returnvar+2endhash_var={func=>foo()}----下课----------------这样我以后就可以调用Class::hash_var["func"][10]或Class::hash_var["func"](10)那会返回12? 最佳答案 你可以使用method方法。deffoo(var)returnvar+2endhash_var={:func=>method(:foo)}hash_var[

ruby - 检查是否没有参数传递

这是一些代码:$cat1.rb#!/usr/bin/envrubydeffp1=nilunlessp1#TODOputs'noparameterspassed'endendffnil$./1.rbnoparameterspassednoparameterspassed问题是,有没有办法区分没有参数和传递了一个nil参数?UPD我决定在javascript中添加一个用例,希望让事情变得更清楚:someProp:function(value){if(arguments.length){this._someProp=value;}returnthis._someProp;}

ruby-on-rails - 检查多个参数的存在

我需要检查多个参数是否存在。目前我写的是ifparams[:p1].present?&¶ms[:p2].present?&¶ms[:p3].present?#Dosomethingend有没有更有效的方法来做到这一点? 最佳答案 您可以使用Enumerable.all?方法:%i(p1p2p3).all?{|key|params[key].present?}另一种选择,如果您需要这些值,它会获取它们并检查是否存在。params.values_at(*%i(p1p2p3)).all?(&:present?)或param

ruby - 获取 ruby​​ 函数对象本身

在Ruby中,一切都应该是一个对象。但是我有一个很大的问题是要以通常的方式定义函数对象,比如deff"foo"end与Python不同,f是函数结果,而不是函数本身。因此,f()、f、ObjectSpace.f都是"foo"。此外,f.methods仅返回字符串方法列表。如何访问函数对象本身? 最佳答案 您只需使用method方法。这将返回与该方法匹配的Method实例。一些例子:>>deff>>"foo">>end=>nil>>f=>"foo">>method(:f)=>#>>method(:f).methods=>[:==,:e

ruby - 在 Ruby 中使用多个 'gsub' 实例

我正在用Ruby(1.9.3)制作一个基本的翻译器。我从本地测试文件('a.txt')中提取并使用gsub替换某些匹配项以模仿从当代英语到中/早期现代英语的翻译。我遇到了可读性问题:如何使大量的gsub用法更易于阅读?我尝试使用以开头的多行deftranslate@text.gsub(/my/,'mine')@text.gsub(/\sis\s/,'be')end但这只会打印最终的gsub。我只能假设第二个请求会覆盖第一个。我想避免创建大量的gsub请求,但我似乎找不到合适的答案。这是我当前程序的示例:lines=File.readlines('a.txt')@text=lines.j

ruby-on-rails - 如何在 Rails 中使用带有对象数组的强参数

使用Rails4.0强参数时,如何允许这样的JSON?{"user":{"first_name":"Jello"},"users_to_employer":[{"start_date":"2013-09-03T16:45:27+02:00","end_date":"2013-09-10T16:45:27+02:00","employer":{"company_name":"Telenor"}},{"start_date":"2013-09-17T16:45:27+02:00","end_date":null,"employer":{"company_name":"Erixon"}}]}

ruby - 如何在运行时动态创建实例方法?

[ruby1.8]假设我有:dummy"string"doputs"thing"end现在,这是对一种方法的调用,该方法具有一个字符串和一个block作为输入参数。不错。现在假设我可以有很多类似的调用(不同的方法名称,相同的参数)。示例:otherdummy"string"doputs"thing"end现在因为它们做同样的事情,而且它们可能有数百个,所以我不想为所需类中的每个方法创建一个实例方法。我宁愿找到一种聪明的方法来根据一般规则在运行时动态定义方法。这可能吗?常用的技术有哪些?谢谢 最佳答案 我特别喜欢使用method_mi

ruby-on-rails - Ruby:Mixin,它添加了动态实例方法,其名称是使用类方法创建的

我有以下内容:moduleThingdefself.included(base)base.send:extend,ClassMethodsendmoduleClassMethodsattr_reader:thingsdefhas_things(*args)options=args.extract_options!#RubyonRails:popsthelastargifit'saHash#Getalistofthethings(Symbolsonly)@things=args.select{|p|p.is_a?(Symbol)}includeInstanceMethodsendendm